package com.yungu.swift.system.sys.service;


import com.github.miemiedev.mybatis.paginator.domain.PageList;
import com.yungu.swift.base.ResponseData;
import com.yungu.swift.base.model.PageVo;
import com.yungu.swift.base.model.api.ApiPageParam;
import com.yungu.swift.base.service.BaseService;
import com.yungu.swift.system.sys.model.dto.SysAccountPassengerDto;
import com.yungu.swift.system.finance.model.param.AdminAccountFlowPageParam;
import com.yungu.swift.system.finance.model.param.AdminAccountPageParam;
import com.yungu.swift.system.sys.model.param.AdminPassengerAccountParam;
import com.yungu.swift.system.sys.model.vo.SysPassengerAccountFlowVo;
import com.yungu.swift.system.sys.model.vo.SysPassengerAccountVo;

import java.util.List;
import java.util.Map;

public interface SysAccountPassengerService extends BaseService<SysAccountPassengerDto> {
    /**
     * 乘客账户查询
     *
     * @param pageParam
     * @return
     */
    ResponseData<PageVo<SysPassengerAccountVo>> queryPageVo(AdminAccountPageParam pageParam);

    /**
     * 乘客账户查询 —— 导出
     *
     * @param pageParam
     * @return
     */
    ResponseData<List<SysPassengerAccountVo>> export(AdminAccountPageParam pageParam);

    /**
     * 统计 —— 查询乘客数量及账号总额
     *
     * @param pageParam
     * @return
     */
    ResponseData<SysPassengerAccountVo> statistics(AdminAccountPageParam pageParam);

    /**
     * 后台 —— 查询乘客流水明细
     *
     * @param flowPageParam
     * @return
     */
    ResponseData<PageVo<SysPassengerAccountFlowVo>> flowQueryPage(AdminAccountFlowPageParam flowPageParam);

    /**
     * 移动端 —— 乘客查询账户明细
     *
     * @param apiPageParam
     * @return
     */
    ResponseData<PageList<SysPassengerAccountFlowVo>> flowQueryPage(ApiPageParam apiPageParam);

    /**
     * 查询乘客流水明细 —— 导出
     *
     * @param flowPageParam
     * @return
     */
    ResponseData<List<SysPassengerAccountFlowVo>> flowExport(AdminAccountFlowPageParam flowPageParam);

    /**
     * 获取乘客账号
     *
     * @param map
     * @return
     */
    ResponseData<SysPassengerAccountVo> findAccountPassengerVo(Map<String, Object> map);


    /**
     * 修改账户余额
     *
     * @param passengerAccountParam 参数集合
     * @return ResponseData
     */
    ResponseData<Boolean> adjustBalance(AdminPassengerAccountParam passengerAccountParam);
}